package com.littleHan.brushQuestions.web.userCenter.dao;

import com.littleHan.brushQuestions.web.start.pojo.GeneralUser;
import com.littleHan.brushQuestions.web.start.pojo.Permission;
import com.littleHan.brushQuestions.web.userCenter.pojo.Pagination;
import com.littleHan.brushQuestions.web.userCenter.pojo.vo.NoticeContentVo;
import com.littleHan.brushQuestions.web.userCenter.pojo.vo.TopicCollectAndTopicVo;
import com.littleHan.brushQuestions.web.userCenter.pojo.vo.TopicCommentVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserCenterDao {

    /**
     * 根据father_id获取权限实例
     * @param list father_id
     * @return 权限列表
     */
    List<Permission> getNavigationBar(List<String> list);

    /**
     * 根据用户id获取普通用户信息
     * @param userId 用户id
     * @return
     */
    GeneralUser getGeneralUserInfo(String userId);

    /**
     * 修改个人资料
     * @param userId 用户id
     * @param generalUser 普通用户实例
     * @return
     */
    int editUserInfo(@Param("userId")  String userId, @Param("generalUser") GeneralUser generalUser);

    /**
     * 修改用户头像
     * @param
     */
    int updateUserIcon(@Param("icon") String icon, @Param("userId") String userId);

    /**
     * 根据用户id获取其收藏题目总数量
     * @param userId 用户id
     * @return 用户收藏题目数量
     */
    int getUserCollectTopicListNum(String userId);

    /**
     * 根据用户id获取题目列表
     * @param userId 用户id
     * @param pagination 分页对象
     * @return 收藏题目列表
     */
    List<TopicCollectAndTopicVo> getTopicCollectByUserId(@Param("userId") String userId, @Param("pagination") Pagination pagination);

    /**
     * 根据题目id获取题目收藏数量
     * @param topicId 题目id
     * @return 收藏数量
     */
    int getCollectNum(String topicId);

    /**
     * 根据题目id获取题目的评论数量
     * @param topicId 题目id
     * @return 评论数量
     */
    int getCommentNum(String topicId);

    /**
     * 取消收藏-根据收藏id删除记录
     * @param id 收藏id
     * @return 影响记录数
     */
    int cancelTopicByCollectId(String id);

    /**
     * 根据用户id查询所有的评论（进行分页）
     * @param userId 用户id
     * @param pageNo 从第几个开始
     * @param pageSize 显示几个
     * @return
     */
    List<TopicCommentVo> getUserAllComment(@Param("userId")String userId,@Param("pageNo")int pageNo,@Param("pageSize")int pageSize);

    /**
     * 获取当前用户评论的总数量
     * @param userId 用户id
     * @return
     */
    int getUserAllCommentNum(@Param("userId")String userId);

    /**
     * 删除评论根据评论id
     * @param id 评论id
     * @return
     */
    int deleteMyComment(@Param("id") String id);

    /**
     * 获取用户未读的消息通知列表
     * @param userId 用户id
     * @param pageNo 从第几个开始
     * @param pageSize 显示几个
     * @return
     */
    List<NoticeContentVo> getNotice(@Param("userId")String userId,@Param("pageNo")int pageNo,@Param("pageSize")int pageSize);

    /**
     * 获取用户未读的消息通知的数量
     * @param userId 用户id
     * @return
     */
    int getNoticeNum(String userId);

    /**
     * 将消息设为已读
     * @param id 消息通知id
     * @return
     */
    int updateIsRead(String id);


}
